# -*- coding: utf-8 -*-
from common import orm
from common.utils.types import Enum

BET_TYPE = Enum({
    "ONE_FRONT": (1L, u"猜冠军"),
    "TWO_FRONT": (2L, u"猜前二"),
    "THREE_FRONT": (3L, u"猜前三"),
    "FOUR_FRONT": (4L, u"猜前四"),
    "FIVE_FRONT": (5L, u"猜前五"),
    "ONE_ANY": (6L, u"定位胆"),
    "FIRST_BSOE": (7L, u"冠军大小单双"),
    "SECOND_BSOE": (8L, u"亚军大小单双"),
    "THIRD_BSOE": (9L, u"季军大小单双"),
    "DRAGON_TIGER": (10L, u"龙虎"),

    "PLATE_BSOE_1": (11L, u"第1名"),
    "PLATE_BSOE_2": (12L, u"第2名"),
    "PLATE_BSOE_3": (13L, u"第3名"),
    "PLATE_BSOE_4": (14L, u"第4名"),
    "PLATE_BSOE_5": (15L, u"第5名"),
    "PLATE_BSOE_6": (16L, u"第6名"),
    "PLATE_BSOE_7": (17L, u"第7名"),
    "PLATE_BSOE_8": (18L, u"第8名"),
    "PLATE_BSOE_9": (19L, u"第9名"),
    "PLATE_BSOE_10": (20L, u"第10名"),

    "PLATE_DRAGON_TIGER_1v10": (21L, u"1v10龙虎"),
    "PLATE_DRAGON_TIGER_2v9": (22L, u"2v9龙虎"),
    "PLATE_DRAGON_TIGER_3v8": (23L, u"3v8龙虎"),
    "PLATE_DRAGON_TIGER_4v7": (24L, u"4v7龙虎"),
    "PLATE_DRAGON_TIGER_5v6": (25L, u"5v6龙虎"),

})


class Order(orm.Model):
    __tablename__ = "bj_pk10_order"
    id = orm.Column(orm.BigInteger, primary_key=True)
    user_id = orm.Column(orm.BigInteger)
    track_id = orm.Column(orm.BigInteger)  # 每次追号会产生一个ID，普通的为null
    type = orm.Column(orm.SmallInteger)  # 订单类型
    term = orm.Column(orm.VARCHAR)  # 期号
    bet_type = orm.Column(orm.Integer)  # 押宝方式，见上面的枚举
    unit = orm.Column(orm.FLOAT, default=2)  # 用户自选的每注金额
    number = orm.Column(orm.VARCHAR)  # 用户购买数据，格式和bet_type有关
    price = orm.Column(orm.FLOAT)  # 总价
    status = orm.Column(orm.Integer)  # 订单状态
    track_status = orm.Column(orm.Integer)  # 追号状态
    times = orm.Column(orm.Integer, default=1)  # 倍数
    win_price = orm.Column(orm.FLOAT, default=0)  # 中奖金额
    bonus = orm.Column(orm.FLOAT, default=0)  # 系统奖励（四舍五入）
    extend = orm.Column(orm.TEXT)
    created_at = orm.Column(orm.DATETIME)
    updated_at = orm.Column(orm.DATETIME)


# 描述及排序
BET_TYPE_DESC = (
    (BET_TYPE.ONE_FRONT, u"至少选1个号，猜对第一个开奖号码即中<font color=#ff00000>10%s</font>元"),
    (BET_TYPE.TWO_FRONT, u"每位至少选1个号，按位猜对开奖号码前2位即中<font color=#ff00000>55%s</font>元"),
    (BET_TYPE.THREE_FRONT, u"每位至少选1个号，按位猜对开奖号码前3位即中<font color=#ff00000>160%s</font>元"),
    (BET_TYPE.FOUR_FRONT, u"每位至少选1个号，按位猜对开奖号码前4位即中<font color=#ff00000>350%s</font>元"),
    (BET_TYPE.FIVE_FRONT, u"每位至少选1个号，按位猜对开奖号码前5位即中<font color=#ff00000>500%s</font>元"),
    (BET_TYPE.ONE_ANY, u"至少选1个号，猜对相同位置开奖号即中<font color=#ff00000>10%s</font>元"),
    (BET_TYPE.FIRST_BSOE, u"至少选1个号，猜对第1位的大（>=6）、小（&lt;6）、单、双即中<font color=#ff00000>3.6%s</font>元"),
    (BET_TYPE.SECOND_BSOE, u"至少选1个号，猜对第2位的大（>=6）、小（&lt;6）、单、双即中<font color=#ff00000>3.6%s</font>元"),
    (BET_TYPE.THIRD_BSOE, u"至少选1个号，猜对第3位的大（>=6）、小（&lt;6）、单、双即中<font color=#ff00000>3.6%s</font>元"),
    (BET_TYPE.DRAGON_TIGER, u"至少选1个号，猜对第1和10位的龙（第1位>第10位）、虎（反之）关系即中<font color=#ff00000>3.6%s</font>元"),
)


def get_avaliable_bet_type():
    _list = []
    for index, (bet_type, desc) in enumerate(BET_TYPE_DESC):
        _list.append({
            "id": index + 1,
            "title": BET_TYPE.get_label(bet_type),
            "play_id": bet_type,
            "des": desc,
            "rule": "",
            "support": 1
        })
    return _list


BET_TYPE_DESC_V3 = (
    (BET_TYPE.ONE_ANY, u"至少选1个号，猜对相同位置开奖号即中奖"),
    (BET_TYPE.ONE_FRONT, u"至少选1个号，猜对第一个开奖号码即中奖"),
    (BET_TYPE.TWO_FRONT, u"每位至少选1个号，按位猜对开奖号码前2位即中奖"),
    (BET_TYPE.THREE_FRONT, u"每位至少选1个号，按位猜对开奖号码前3位即中奖"),
    (BET_TYPE.FOUR_FRONT, u"每位至少选1个号，按位猜对开奖号码前4位即中奖"),
    (BET_TYPE.FIVE_FRONT, u"每位至少选1个号，按位猜对开奖号码前5位即中奖"),
    (BET_TYPE.FIRST_BSOE, u"至少选1个号，猜对第1位的大（>=6）、小（&lt;6）、单、双即中奖"),
    (BET_TYPE.SECOND_BSOE, u"至少选1个号，猜对第2位的大（>=6）、小（&lt;6）、单、双即中奖"),
    (BET_TYPE.THIRD_BSOE, u"至少选1个号，猜对第3位的大（>=6）、小（&lt;6）、单、双即中奖"),
    (BET_TYPE.DRAGON_TIGER, u"至少选1个号，猜对第1和10位的龙（第1位>第10位）、虎（反之）关系即中奖"),
)

BET_TYPE_DESC_V4 = {
    BET_TYPE.ONE_FRONT: u"至少选1个号，猜对第一个开奖号码即中奖",
    BET_TYPE.TWO_FRONT: u"每位至少选1个号，按位猜对开奖号码前2位即中奖",
    BET_TYPE.THREE_FRONT: u"每位至少选1个号，按位猜对开奖号码前3位即中奖",
    BET_TYPE.FOUR_FRONT: u"每位至少选1个号，按位猜对开奖号码前4位即中奖",
    BET_TYPE.FIVE_FRONT: u"每位至少选1个号，按位猜对开奖号码前5位即中奖",
    BET_TYPE.ONE_ANY: u"至少选1个号，猜对相同位置开奖号即中奖",
    BET_TYPE.FIRST_BSOE: u"至少选1个号，猜对第1位的大（>=6）、小（&lt;6）、单、双即中奖",
    BET_TYPE.SECOND_BSOE: u"至少选1个号，猜对第2位的大（>=6）、小（&lt;6）、单、双即中奖",
    BET_TYPE.THIRD_BSOE: u"至少选1个号，猜对第3位的大（>=6）、小（&lt;6）、单、双即中奖",
    BET_TYPE.DRAGON_TIGER: u"至少选1个号，猜对第1和10位的龙（第1位>第10位）、虎（反之）关系即中奖",

    BET_TYPE.PLATE_BSOE_1: u"开奖号第1位6-10为大，1-5为小，单数为单，双数为双",
    BET_TYPE.PLATE_BSOE_2: u"开奖号第2位6-10为大，1-5为小，单数为单，双数为双",
    BET_TYPE.PLATE_BSOE_3: u"开奖号第3位6-10为大，1-5为小，单数为单，双数为双",
    BET_TYPE.PLATE_BSOE_4: u"开奖号第4位6-10为大，1-5为小，单数为单，双数为双",
    BET_TYPE.PLATE_BSOE_5: u"开奖号第5位6-10为大，1-5为小，单数为单，双数为双",
    BET_TYPE.PLATE_BSOE_6: u"开奖号第6位6-10为大，1-5为小，单数为单，双数为双",
    BET_TYPE.PLATE_BSOE_7: u"开奖号第7位6-10为大，1-5为小，单数为单，双数为双",
    BET_TYPE.PLATE_BSOE_8: u"开奖号第8位6-10为大，1-5为小，单数为单，双数为双",
    BET_TYPE.PLATE_BSOE_9: u"开奖号第9位6-10为大，1-5为小，单数为单，双数为双",
    BET_TYPE.PLATE_BSOE_10: u"开奖号第10位6-10为大，1-5为小，单数为单，双数为双",

    BET_TYPE.PLATE_DRAGON_TIGER_1v10: u"第1位数字大于第10位数字为龙，第1位数字小于第10位数字为虎",
    BET_TYPE.PLATE_DRAGON_TIGER_2v9: u"第2位数字大于第9位数字为龙，第1位数字小于第9位数字为虎",
    BET_TYPE.PLATE_DRAGON_TIGER_3v8: u"第3位数字大于第8位数字为龙，第1位数字小于第8位数字为虎",
    BET_TYPE.PLATE_DRAGON_TIGER_4v7: u"第4位数字大于第7位数字为龙，第1位数字小于第7位数字为虎",
    BET_TYPE.PLATE_DRAGON_TIGER_5v6: u"第5位数字大于第6位数字为龙，第1位数字小于第6位数字为虎",
}

PK10_BET_CATEGORY = Enum({
    'ONE_FRONT': (1L, u'猜冠军'),
    'TWO_FRONT': (2L, u'猜前二'),
    'THREE_FRONT': (3L, u'猜前三'),
    'FOUR_FRONT': (4L, u'猜前四'),
    'FIVE_FRONT': (5L, u'猜前五'),
    'ONE_ANY': (6L, u'定位胆'),
    # 'BIG_SMALL': (7L, u'大小单双'),
    # 'DRAGON_TIGER': (8L, u'龙虎'),
    'PLATE': (7L, u'两面盘')
})

PK10_BET_CATEGORY_TYPE = [
    (PK10_BET_CATEGORY.ONE_ANY, [BET_TYPE.ONE_ANY, ]),
    (PK10_BET_CATEGORY.PLATE,
     [BET_TYPE.PLATE_BSOE_1, BET_TYPE.PLATE_DRAGON_TIGER_1v10, BET_TYPE.PLATE_BSOE_2, BET_TYPE.PLATE_DRAGON_TIGER_2v9,
      BET_TYPE.PLATE_BSOE_3, BET_TYPE.PLATE_DRAGON_TIGER_3v8, BET_TYPE.PLATE_BSOE_4,
      BET_TYPE.PLATE_DRAGON_TIGER_4v7, BET_TYPE.PLATE_BSOE_5, BET_TYPE.PLATE_DRAGON_TIGER_5v6, BET_TYPE.PLATE_BSOE_6,
      BET_TYPE.PLATE_BSOE_7, BET_TYPE.PLATE_BSOE_8, BET_TYPE.PLATE_BSOE_9,
      BET_TYPE.PLATE_BSOE_10,
      ]),
    (PK10_BET_CATEGORY.ONE_FRONT, [BET_TYPE.ONE_FRONT, ]),
    (PK10_BET_CATEGORY.TWO_FRONT, [BET_TYPE.TWO_FRONT, ]),
    (PK10_BET_CATEGORY.THREE_FRONT, [BET_TYPE.THREE_FRONT, ]),
    (PK10_BET_CATEGORY.FOUR_FRONT, [BET_TYPE.FOUR_FRONT, ]),
    (PK10_BET_CATEGORY.FIVE_FRONT, [BET_TYPE.FIVE_FRONT, ]),
    # (PK10_BET_CATEGORY.BIG_SMALL, [BET_TYPE.FIRST_BSOE, BET_TYPE.SECOND_BSOE, BET_TYPE.THIRD_BSOE, ]),
    # (PK10_BET_CATEGORY.DRAGON_TIGER, [BET_TYPE.DRAGON_TIGER, ]),
]


def get_available_bet_type_v3():
    _list = []
    for index, (bet_type, desc) in enumerate(BET_TYPE_DESC_V3):
        _list.append({
            "id": index + 1,
            "title": BET_TYPE.get_label(bet_type),
            "play_id": bet_type,
            "des": desc,
            "rule": "",
            "support": 1
        })
    return _list


def get_available_bet_type_v4(cvc=1):
    _list = []
    for category, bet_types in PK10_BET_CATEGORY_TYPE:
        if int(cvc) < 23 and category == PK10_BET_CATEGORY.PLATE:
                continue
        type_list = []
        _id = 1
        for bet_type in bet_types:
            type_list.append({
                'id': _id,
                'title': BET_TYPE.get_label(bet_type),
                'play_id': bet_type,
                'des': BET_TYPE_DESC_V4[bet_type],
                'rule': '',
                'support': 1
            })
            _id += 1
        data = {
            'id': category,
            'title': PK10_BET_CATEGORY.get_label(category),
            'support': 1,
            'list': type_list
        }
        _list.append(data)
    return _list
